package com.spring.study.config;

import jakarta.servlet.MultipartConfigElement;
import jakarta.servlet.ServletRegistration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;


public class WebClient extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class, MybatisConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        // 设置文件上传相关参数
        // 第一个参数：上传时的临时目录
        // 第二个参数：单个文件最大字节数（例如：2MB）
        // 第三个参数：整个请求的最大字节数（例如：4MB）
        // 第四个参数：文件写入磁盘前保存在内存中的阈值（单位字节）
        MultipartConfigElement multipartConfigElement = new MultipartConfigElement(
                System.getProperty("java.io.tmpdir"),          // 临时文件存放路径（需要保证该目录存在且具有写权限）
                10 * 1024 * 1024, // 单文件最大 2MB
                30 * 1024 * 1024, // 整个请求最大 4MB
                0               // 直接写入磁盘
        );
        registration.setMultipartConfig(multipartConfigElement);
    }
}
